(function () {/**
 * Created by ChenJiangwei on 2017/1/20.
 */
var baseInfoForm = function() {
    this.globalHost=common.globalHost;
    this.sendSMSPort=common.sendSMSPort;
    this.tel=$('#tel');
    this.testCode=$('#testCode');
    this.password=$('#password');
    this.notice=$('#notice');
    this.getCode=$('#getCode');
    this.checked=$('#checked');
    this.form=$('form');
    this.submit=$('#login-btn');  
    this.company=$('#company');
    this.store=$('#store');
    this.agentName=$('#agentName');
    this.IdCard=$('#IdCard');
    this.businessCard=$('#businessCard');
    this.frontPhoto=$('#frontPhoto');
    this.backPhoto=$('#backPhoto');
};
baseInfoForm.prototype = {
    formPost:function (options) {
        var self=this;
        var url=options.url;
        var sendData=options.sendData;
        var resSuccess=options.resSuccess;
        var resFailed=options.resFailed;
        var resError=options.resError;
        jQuery.support.cors = true;
        $.ajax
        ({
            data:sendData,
            type: "POST",
            contentType: "application/x-www-form-urlencoded;charset=utf-8",
            dataType:"json",
            url:url,
            success:function(data){
                //console.log(data);
                if(typeof data==="string"){
                    data=JSON.parse(data);
                }
                if(!!data && data['code']=="0"){
                    sendData={};
                    self.changeMsg(data['res']['msg']);
                     !!resSuccess&&$.isFunction(resSuccess)&&resSuccess(data);
                }else{
                    self.changeMsg(data['res']['msg']);
                    !!resFailed&&$.isFunction(resFailed)&&resFailed(data);
                    if(data.code==101 ||data.code==102){
                        console.log("token为空或者token失效");
                        window.location.href='login.html';
                    }
                }
            },
            timeout:10000,
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                self.changeMsg("网络不畅，请稍后重试");
                !!resError&&$.isFunction(resError)&&resError();
            }
        });
    },
    buildSelectByDataList:function(options){
        var $selector=$(options.selector);
        var dataList=options.dataList;
        var initTitle=options.initTitle;
        var arrReturn=[];
        if(initTitle!=undefined){
            arrReturn.push("<option style='display:none;' value=''>"+initTitle+"</option>");
        }
        $.each(dataList,function (idx, ele) {
            arrReturn.push("<option value="+ele+">"+ele+"</option>");
        });
        $selector.html(arrReturn.join(""));
    },
     initForm:function(selector){
        var $selector=$(selector)[0];
        $selector.reset();
    },
    regTestTel:function(options) {
        var self=this;
        var noticeMsg='';
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var length=Number(options.length);
        var reg=options.reg||/^1(3|4|5|7|8|)\d{9}$/;
        var sendValue=options.sendValue||"";
        var val=targetSelector.val()||sendValue;
        if(!val){
            noticeMsg="请输入您的"+msgStr;
        }else if(val.indexOf(" ")>0){
            noticeMsg="您输入的"+msgStr+"有空格";
        }else if (val.length<length){
            noticeMsg="您的"+msgStr+"长度少于"+length+"位";
        }else if(val.length>length){
            noticeMsg="您的"+msgStr+"长度大于"+length+"位";
        }else if(reg.test(val)==false){
            noticeMsg="您输入的"+msgStr+"不匹配";
        }else if(reg.test(val)){
            noticeMsg="";
            return true;
        }
        self.changeMsg(noticeMsg);
        return false;
    },
    testText:function(options){
        var self=this;
        var noticeMsg='';
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var val=targetSelector.val();
        if(!val){
            noticeMsg="请输入您的"+msgStr;
        }else if(val.indexOf("请选择")>0){
            noticeMsg="请输入您的"+msgStr;
        }else {
            return true;
        }
       self.changeMsg(noticeMsg);
        return false;
    },
    testTextAccount:function(options){
        var self=this;
        var noticeMsg='';
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var val=targetSelector.val();
        if(!val){
            noticeMsg="请输入您的"+msgStr;
        }else if(val.indexOf("请选择")>0){
            noticeMsg="请输入您的"+msgStr;
        }else if(val.length<8){
            noticeMsg=msgStr+"最少是八位"
        }else {
            return true;
        }
       self.changeMsg(noticeMsg);
        return false;
    },
    uploadImg:function(options){
        var self=this;
        var noticeMsg='';
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var val=targetSelector.val();
        if(!val){
            noticeMsg="请上传您的"+msgStr;
        }else {
            return true;
        }
        self.changeMsg(noticeMsg);
        return false;
    },
    testIdCard:function(options){   
        var self=this; 
        var idcard= $(options.targetSelector).val();
         
        var result=checkIdcard(idcard);
        if(result==="验证通过!"){
            return true;
        }else {
            self.changeMsg("请输入正确的身份证号码");
            return false;
        }
        function checkIdcard(idcard){
            // console.log(idcard.substr(-1,1));
            if(idcard.substr(-1,1)==="x"){
                idcard=idcard.replace(idcard.substr(-1,1),"X");
            }
            // console.log(idcard);
            var Errors=new Array(
                    "验证通过!",
                    "身份证号码位数不对!",
                    "身份证号码出生日期超出范围或含有非法字符!",
                    "身份证号码校验错误!",
                    "身份证地区非法!"
            );
            var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
            var idcard,Y,JYM;
            var S,M;
            var ereg="";
            var idcard_array = new Array();
            idcard_array = idcard.split("");
    //地区检验
            if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
    //身份号码位数及格式检验
            switch(idcard.length){
                case 15:
                    if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
                        ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
                    } else {
                        ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
                    }
                    if(ereg.test(idcard)) return Errors[0];
                    else return Errors[2];
                    break;
                case 18:
    //18位身份号码检测
    //出生日期的合法性检查
    //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
    //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
                    if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
                        ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
                    } else {
                        ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
                    }
                    if(ereg.test(idcard)){//测试出生日期的合法性
    //计算校验位
                        S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
                                + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
                                + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
                                + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
                                + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
                                + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
                                + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
                                + parseInt(idcard_array[7]) * 1
                                + parseInt(idcard_array[8]) * 6
                                + parseInt(idcard_array[9]) * 3 ;
                        Y = S % 11;
                        M = "F";
                        JYM = "10X98765432";
                        M = JYM.substr(Y,1);//判断校验位
                        if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位
                        else return Errors[3];
                    }
                    else return Errors[2];
                    break;
                default:
                    return Errors[1];
                    break;
            }

        }      


    },
     testMobileCode:function (options) {
        var self=this;
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var sendValue=options.sendValue||"";
        var val=targetSelector.val()||sendValue;
        if(!val){
            self.changeMsg(msgStr);
            return false;
        }else {
            return true;
        }
    },
    agreeProtocol:function(options){
        var self=this;
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        if(targetSelector.hasClass("gma-label-checked")){
            return true;
        }else{
            self.changeMsg(msgStr);
            return false;
        }
    },
     getTestCode:function (options){
        var self=this;
        var globalHost=self.globalHost;
        var sendSMSPort=self.sendSMSPort;
        var url=globalHost+sendSMSPort;
        var type=options.type||"";
        var counter=60;
        self.getCode.off('tap').on('tap',function(e){
            var $this=$(this);
            var tel=$(self.tel);
            var resultTel=self.regTestTel({targetSelector:tel,noticeMsg:"手机号",length:11});
            var telVal=$(self.tel).val();
            var checkCase=$this.hasClass('act-ago');
            if(!!resultTel&&!!checkCase){
                var sendData={mobile:telVal,type:type};
                self.formPost({
                    url:url,
                    sendData:sendData,
                    resSuccess:function(data){
                        $this.hasClass('act-ago')&&!!resultTel?$this.removeClass("act-ago").addClass("acted-yet")&&$this.html(counter+"s后重新发送")&&timeCounter(counter):null;
                    }
               }) 
            }else{
                console.log('不准发送ajax');
            };
             function timeCounter (counter) {
                    var timer=setInterval(function () {
                        counter--;
                        $this.html(counter+"s后重新发送");
                        if(counter==0){
                            clearInterval(timer);
                            $this.html("获取验证码");
                            $this.addClass("act-ago").removeClass("acted-yet");
                        }
                    },1000);
                }
            e.preventDefault();
            return false;
        })  
    },
    testPassword:function (options) {
        var noticeMsg='';
        var self=this;
        var targetSelector=$(options.targetSelector);
        var msgStr=options.noticeMsg;
        var sendValue=options.sendValue||"";
        var val=targetSelector.val()||sendValue;
        var reg=/^[0-9]{6}$/;
        if(!val){
             noticeMsg="请输入您的"+msgStr;
        }else if(val.indexOf(" ")>0){
            noticeMsg="您输入的"+msgStr+"有空格";
        }else if(reg.test(val)===false){
            noticeMsg="密码由6位数字组成";
        }else if(reg.test(val)){
            noticeMsg='';
            return true;
        }
         !!self.notice.length && self.changeMsg(noticeMsg);
            return false;
    },
    counterCtrl:function(options){
        var self=this;
        var targetSelector=$(options.targetSelector);
        var counterSelector=$(options.counterSelector);
        var length=options.length;
        var noticeMsg=options.noticeMsg;
        targetSelector.off('input').on('input',function(e){
            var $this=$(this);
            var counterLength=$this.val().length;   
            counterLength>length?length&&self.changeMsg(noticeMsg):counterSelector.html(counterLength);
            e.preventDefault();
            return false;
        })
    },
    changeMsg:function(msg) {
        var self=this;
        !!self.notice.length && self.notice.html(msg).stop().animate({"opacity":"1"},500);
        setTimeout(function () {
            self.notice.animate({"opacity":"0"},500,function () {
                self.notice.html("");
            });
        },1000);
    }
};

window.baseInfoForm = new baseInfoForm();
}).call(this);